#include "BSTree.h"

template<typename T>
BSTree<T>::BSTree()
{
}

template<typename T>
BSTree<T>::~BSTree()
{
}

template<typename T>
BiTreeNode<T>* BSTree<T>::Search(BiTreeNode<T> *pBiTreeNode, T key)
{
	if(NULL == pBiTreeNode)
		return NULL:
	else if(key == pBiTreeNode->data)
		return Search(pBiTreeNode->pLChild, key);
	else
		return Search(pBiTreeNode->pRChild, key);
}

template<typename T>
void BSTree<T>::InsertBST(BiTreeNode<T> *pBiTreeRootNode, BiTreeNode<T> *pBiTreeNode)
{
	if(pBiTreeRootNode == NULL)
		pBiTreeRootNode=pBiTreeNode;
	else if(pBiTreeNode->data<pBiTreeRootNode->data)
		InsertBST(pBiTreeRootNode->pLChild, pBiTreeNode);
	else
		InsertBST(pBiTreeRootNode->pRChild, pBiTreeNode);
}

template<typename T>
void BSTree<T>::CreateBST(BiTreeNode<T> *pBiTreeRootNode, T keyArr[], int n)
{
	for (int i=0; i<n; i++)
	{
		BiTreeNode<T> *pNode=new BiTreeNode<T>;
		pNode->data=keyArr[i];
		pNode->pLChild=pNode->pRChild=NULL;
		InsertBST(pBiTreeRootNode, pNode);
	}
}